#ifndef __SERVER_THREADS__
#define __SERVER_THREADS__

#include <windows.h>


class server_base;
class servicer;
class broadcaster;
class network;
class client_manager;



struct listen_thread_arg {
	server_base* PtrServer;	
	int ServicePort;
	int BroadcastPort;
};

DWORD WINAPI ListenThread(LPVOID arg);



struct service_thread_arg {
	server_base*	PtrServer;
	servicer*		PtrServicer;
	network*		PtrServiceNetwork;
	client_manager*	PtrClientManager;
};

DWORD WINAPI ServiceThread(LPVOID arg);



struct broadcast_thread_arg {
	broadcaster* PtrBroadcaster;	
};

DWORD WINAPI BroadcastThread(LPVOID arg);



struct access_keeper_thread_arg {
	broadcaster* PtrBroadcaster;
};

DWORD WINAPI AccessKeeperThread(LPVOID arg);



struct object_relay_thread_arg {
	network*		PtrServerUdpNetwork;
	client_manager*	PtrClientManager;	
};

DWORD WINAPI ObjectRelayThread(LPVOID arg);


#endif